package com.dowson.config;

import com.dowson.dao.BookDao;
import com.dowson.dao.PersonDao;
import org.springframework.context.annotation.*;

/**
 * @Author Zoe
 * @Date: 2020/11/24
 * @Description
 */

/**
 * 自动装配：
 * 1
 * 1.1：Autowired -> Spring注解
 * 默认按照类型从容器中找对应的组件annotationConfigApplicationContext.getBean(Person.class);
 * 如果找到多个相同类型的组件，再将属性的名称作为组件的id去容器中查找annotationConfigApplicationContext.getBean("Person");
 * 1.2：@Qualifier
 * 指定组件的属性名去装配
 * <p>
 * 2
 * 2.1：Resource注解 -> JSR250注解
 * 默认按照先按照组件名去容器中寻找组件,annotationConfigApplicationContext.getBean("Person");
 * 如果按照ID没有找到该组件,那么会根据类型来装配组件
 */
@Configuration
@PropertySource("classpath:person.properties")
@ComponentScan("com.dowson")
public class MainConfigAutowire {

    @Bean(name = "personDao1")
    public PersonDao personDao() {
        PersonDao personDao = new PersonDao();
        personDao.setLabel("config");
        return personDao;
    }

    @Bean
    public BookDao bookDao() {
        BookDao bookDao = new BookDao();
        bookDao.setLabel("config");
        return bookDao;
    }
}
